package models; import java.util.concurrent.*; /** * * class used for determining avg service time and avg waiting time * */ public class Operations { private static ArrayBlockingQueue<Task> customerHistory; /** * Get the average service time * @return the average service time */ public static long getAverageServiceTime() { long totalServiceTime = 0; long numberOfCustomers = 0; long startTime = TaskScheduler.getInstance().getStartTime(); long finishTime = TaskScheduler.getInstance().getSimulationTime() + startTime; for (Task t : customerHistory) { if ((t.getArrivalTime() > startTime) && (t.getWaitingTime() + t.getArrivalTime() < finishTime) && (t.getWaitingTime() != -1)) { totalServiceTime += t.getServiceTime(); numberOfCustomers++; } } return totalServiceTime / numberOfCustomers; } /** * get the average waiting time * @return the average waiting time */ public static long getAverageWaitingTime() { long totalWaitingTime = 0; long numberOfCustomers = 0; long startTime = TaskScheduler.getInstance().getStartTime(); long finishTime = TaskScheduler.getInstance().getSimulationTime() + startTime; for (Task t : customerHistory) { if ((t.getArrivalTime() > startTime) && (t.getWaitingTime() + t.getArrivalTime() < finishTime) && (t.getWaitingTime() != -1)) { totalWaitingTime += t.getWaitingTime(); numberOfCustomers++; } } return totalWaitingTime / numberOfCustomers; } public static ArrayBlockingQueue<Task> getCustomerHistory() { return customerHistory; } public static void setCustomerHistory(ArrayBlockingQueue<Task> customerHistory) { Operations.customerHistory = customerHistory; } }